package com.newly.driver.sdk.device.video.cloud.record.tencent;

import cn.hutool.core.annotation.Alias;
import cn.hutool.core.util.ObjectUtil;
import com.tencentcloudapi.iotvideoindustry.v20201201.models.TimeTemplateItem;
import com.tencentcloudapi.iotvideoindustry.v20201201.models.TimeTemplateSpec;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @author gjm guan
 * @date 2021/10/27 16:15
 * @desc 时间模板项
 * TemplateId    String	是	时间模板ID 注意：此字段可能返回 null，表示取不到有效值。
 * Name	String	是	模板名称 注意：此字段可能返回 null，表示取不到有效值。
 * IsAllWeek	Integer	是	是否全时录制，即7*24小时录制 注意：此字段可能返回 null，表示取不到有效值。
 * Type	Integer	否	是否为自定义模板 注意：此字段可能返回 null，表示取不到有效值。
 * TimeTemplateSpecs	Array of TimeTemplateSpec	否	时间片段详情 注意：此字段可能返回 null，表示取不到有效值。
 */
@Data
public class TXTimeTemplateItem {

    /**
     * 时间模板ID
     */
    @ApiModelProperty("时间模板ID")
    @Alias("TemplateId")
    private String templateId;

    /**
     * 模板名称
     */
    @ApiModelProperty("模板名称")
    @Alias("Name")
    private String name;

    /**
     * 是否全时录制
     */
    @ApiModelProperty("是否全时录制")
    @Alias("IsAllWeek")
    private Long isFullTime;

    /**
     * 是否为自定义模板
     */
    @ApiModelProperty("是否为自定义模板")
    @Alias("Type")
    private Long type;

    /**
     * 时间片段详情
     */
    @ApiModelProperty("时间片段详情")
    @Alias("TimeTemplateSpecs")
    private List<TXTimeTemplateSpec> timeTemplateSpecs;

    public TXTimeTemplateItem(TimeTemplateItem template) {
        this.templateId = template.getTemplateId();
        this.name = template.getName();
        this.isFullTime = template.getIsAllWeek();
        this.type = template.getType();

        TimeTemplateSpec[] timeTemplateSpecs = template.getTimeTemplateSpecs();
        this.timeTemplateSpecs = new ArrayList<>();
        if (!ObjectUtil.isEmpty(timeTemplateSpecs)) {
            for (TimeTemplateSpec timeTemplateSpec : timeTemplateSpecs) {
                this.timeTemplateSpecs.add(new TXTimeTemplateSpec(timeTemplateSpec));
            }
        }
    }

    public TXTimeTemplateItem() {
    }
}
